Tcp reno算法 拥塞控制
拥塞会导致超时
https://bbkgl.github.io/2020/07/22/%E6%8B%A5%E5%A1%9E%E6%8E%A7%E5%88%B6/
慢启动
慢启动意思就是拥塞窗口(cwnd)从最小值 1 开始变大。
将发送窗口的大小在初始的情况下设置为1,在收到接收方确认后,再修改其发送窗口为原来的两倍,也就是2。这样子的话,就是指数增长。
一般在慢启动阶段,碰到第一次丢包的时候会将慢启动阈值(ssthresh)设为当前窗口大小值的一半。 而慢启动到拥塞避免的分界线就是慢启动阈值(ssthresh)。
拥塞避免
在慢启动阶段达到阈值(ssthresh)后就会进入拥塞避免阶段,拥塞避免阶段窗口的增长是线性的
这个阶段会持续到发生下一次丢包(超时)。如果发生了超时(TO),就会将阈值(ssthresh)设置为当前窗口的一半,然后窗口大小从1重新开始慢启动算法(慢恢复)。
快重传
收到了 3 次或以上的重复确认,此时 A 就会知道 5 号数据包丢包,不等 5 号的计时器超时,便直接重传 5 号数据包,这就是 TCP 快速重传。
快恢复
快恢复算法是和快重传配合使用的算法,一般发生了快重传的时候,发送方能收到三次连续重复确认,说明此时网络并不是拥塞,只是单纯的丢包。此时会将阈值(ssthresh)设置为当前窗口的一半,然后窗口大小从阈值(ssthresh)重新开始拥塞避免算法(快恢复)。